/**
 * 
 */
package cl.hhha.web.model;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Transient;

/**
 * Modela una opcion para una encuesta.
 * 
 * @author Óscar Álvarez V
 * @date 20-07-2009 - 9:01:21
 * @version 1.0
 */
@Entity
@Table(name="webh_opcion")
public class Opcion extends AuditableBaseObject implements Serializable, Auditable {
	

	/**
	 * 
	 */
	private static final long serialVersionUID = -506473640973685553L;

	@Id @GeneratedValue(strategy=GenerationType.AUTO)//SEQUENCE, generator="webh_seq_opcion")
	private Long id;
	
	@Transient
	private Boolean seleccionada;
	
	@Column(nullable=false)
	private String glosa;
	
	@ManyToOne
	private Encuesta encuesta;
	

	/**
	 * @return the id
	 */
	public Long getId() {
		return id;
	}

	/**
	 * @param id the id to set
	 */
	public void setId(Long id) {
		this.id = id;
	}

	/**
	 * @return the seleccionada
	 */
	public Boolean getSeleccionada() {
		return seleccionada;
	}

	/**
	 * @param seleccionada the seleccionada to set
	 */
	public void setSeleccionada(Boolean seleccionada) {
		this.seleccionada = seleccionada;
	}

	/**
	 * @return the glosa
	 */
	public String getGlosa() {
		return glosa;
	}

	/**
	 * @param glosa the glosa to set
	 */
	public void setGlosa(String glosa) {
		this.glosa = glosa;
	}

	/**
	 * @return the encuesta
	 */
	public Encuesta getEncuesta() {
		return encuesta;
	}

	/**
	 * @param encuesta the encuesta to set
	 */
	public void setEncuesta(Encuesta encuesta) {
		this.encuesta = encuesta;
	}
	
	/* (non-Javadoc)
	 * @see cl.hhha.web.model.BaseObject#equals(java.lang.Object)
	 */
	@Override
	public boolean equals(Object o) {
		if(o == this){
			return true;
		}
		
		if(!(o instanceof Opcion)){
			return false;
		}
		
		Opcion op = (Opcion)o;
		
		return glosa == null ? op.getGlosa() == null : glosa.equalsIgnoreCase(op.getGlosa()) ;
	}

	/* (non-Javadoc)
	 * @see cl.hhha.web.model.BaseObject#hashCode()
	 */
	@Override
	public int hashCode() {
		return glosa == null ? 0 : (glosa.hashCode() << 2) + 33; 
	}

	/* (non-Javadoc)
	 * @see cl.hhha.web.model.BaseObject#toString()
	 */
	@Override
	public String toString() {
		return glosa;
	}


}
